# -*- coding: utf-8 -*-		
# @Time    : 2024/11/17 19:01		
# @Author  : 郑旬澔		
# @FileName: B1.py		
# @Software: PyCharm		
import time
import random
from datetime import datetime


# 模拟的水箱状态
class WaterTank:
    def __init__(self):
        self.temperature = 20  # 初始温度 20°C
        self.water_level = True  # 默认有水
        self.is_power_on = True  # 初始电源关闭

    def check_water_level(self):
        """模拟水量传感器检测水量"""
        return self.water_level

    def check_temperature(self):
        """模拟温度传感器检测温度"""
        return self.temperature

    def turn_on_power(self):
        """打开电源"""
        self.is_power_on = True

    def turn_off_power(self):
        """关闭电源"""
        self.is_power_on = False

    def increase_temperature(self):
        """每秒增加2度，模拟烧水过程"""
        if self.is_power_on:
            self.temperature += 2
            if self.temperature > 100:
                self.repair_tank()  # 温度不超过100°

    def repair_tank(self):
        """模拟水箱维修"""
        print("水箱烧坏，正在维修...")
        time.sleep(2)
        print("水箱维修完成，恢复正常。")
        self.temperature = 20  # 重置温度
        self.is_power_on = False  # 重置电源状态

    def sleep_mode(self):
        """进入休眠模式"""
        print("进入休眠模式...")
        self.is_power_on = False


# 主模拟函数
def simulate_water_tank():
    tank = WaterTank()

    while True:
        # 获取当前时间
        current_time = datetime.now()
        hour = current_time.hour
        minute = current_time.minute

        # 每秒模拟温度变化
        print(
            f"当前时间: {current_time.strftime('%H:%M:%S')} 温度: {tank.temperature}°C 电源状态: {'开启' if tank.is_power_on else '关闭'}")

        # 判断是否进入休眠模式
        if hour == 23 and minute == 0:  # 晚上11点
            tank.sleep_mode()
        elif hour == 7 and minute == 0:  # 早上7点
            print("早上7点，开始恒温烧水过程...")

        # 温度低于20°时且水箱中有水，则启动烧水
        if tank.check_temperature() < 20:
            if tank.check_water_level():  # 有水
                print("温度低于20°C，水箱有水，打开电源烧水...")
                tank.turn_on_power()
            else:  # 没有水
                print("温度低于20°C，但水箱无水，不打开电源。")

        # 当温度达到100°时，关闭电源
        if tank.check_temperature() >= 100:
            print("温度已达到100°C，关闭电源...")
            tank.turn_off_power()
            break

        # 模拟水箱烧坏
        if random.random() < 0.01:  # 1%几率水箱烧坏
            tank.repair_tank()

        # 增加温度
        tank.increase_temperature()

        # 每秒钟更新一次
        time.sleep(1)


# 启动模拟
simulate_water_tank()
